package com.xwx.common.utils;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 
* @Description:提供一些高频率常用方法集合  
* @author:Dream QQ:68697015
* @time:2015年8月6日 上午10:45:11
 */
public class TypeConversionUtils {
	/**
	 * 判断对象是否为空
	 * @param o　要判断的对象，支持 string,list,map,set,object,int,object等
	 * @return true or false
	 */
	@SuppressWarnings("rawtypes")
	public static boolean isEmpty(Object o) {
		if (o == null) {
			return true;
		}
		if (o instanceof String) {
			if (o.toString().trim().equals("")) {
				return true;
			}
		} else if (o instanceof List) {
			if (((List) o).size() == 0) {
				return true;
			}
		} else if (o instanceof Map) {
			if (((Map) o).size() == 0) {
				return true;
			}
		} else if (o instanceof Set) {
			if (((Set) o).size() == 0) {
				return true;
			}
		} else if (o instanceof Object[]) {
			if (((Object[]) o).length == 0) {
				return true;
			}
		} else if (o instanceof int[]) {
			if (((int[]) o).length == 0) {
				return true;
			}
		} else if (o instanceof long[]) {
			if (((long[]) o).length == 0) {
				return true;
			}
		}
		return false;		
	}
	/**
	 * 是否为数字
	 * @param obj
	 * @return boolean 
	 */
	public static boolean isNum(Object obj) {
		try {
			Integer.parseInt(obj.toString());
		} catch (Exception e) {
			return false;
		}
		return true;
	}
	/**
	 * 格式化字符串->'str'
	 * @param str
	 * @return str
	 */
	public static String format(Object str) {
		return "'" + str.toString() + "'";
	}
	/**
	 * 强转->int
	 * @param obj
	 * @return int
	 */
	public static int toInt(Object obj) {
		return Integer.parseInt(obj.toString());
	}
	/**
	 * 强转->int
	 * @param obj
	 * @param defaultValue
	 * @return int
	 */
	public static int toInt(Object obj, int defaultValue) {
		if (isEmpty(obj)) {
			return defaultValue;
		}
		return toInt(obj);
	}
	/**
	 * 强转->long
	 * @param obj
	 * @return long
	 */
	public static long toLong(Object obj) {
		return Long.parseLong(obj.toString());
	}
	/**
	 * 强转->long
	 * @param obj
	 * @param defaultValue
	 * @return long
	 */
	public static long toLong(Object obj, long defaultValue) {
		if (isEmpty(obj)) {
			return defaultValue;
		}
		return toLong(obj);
	}
	/**
	 * 强转->double
	 * @param obj
	 * @return double
	 */
	public static double toDouble(Object obj) {
		return Double.parseDouble(obj.toString());
	}	
}
